// 页面路由阻断器
import router from './router'
import Performance from '@/tools/performance'

import {useStorePermission} from "@store/permission"
import {useStoreUser} from "@store/user"

/**
 * 路由拦截模式，白名单whiteList 或者 登陆页needLogin 两种模式，后者目录未配置
 * 建议采用白名单方式，可以更方便地应对多种角色权限的配置
 */
const whiteList = ["/", '/login', '/landing', '/dashboard'] // 不重定向白名单
// const whiteList = ["/", '/login'] // 不重定向白名单
// const needLogin = ['/LandingPage']; //需要登陆的页面,未写相关功能，暂不应用

const useInterceptor = function () {
	router.beforeEach(async (to, from, next) => {
		// console.log("目标路由信息", to, to.meta);//to.meta取自路由设置中的meta信息
		const {checkRoute} = useStorePermission();
		const {hasLogin, roles, logout} = useStoreUser();
		let end = Performance.startExecute(`${from.path} => ${to.path} 路由耗时`); /// 路由性能监控

		if (whiteList.includes(to.path)) {
			// 在白名单内，直接放行
			next();
		} else {
			// console.log('用户登陆状态：', hasLogin);
			let _roles = ['guest'];
			if (hasLogin && to.path === "/login") {
				// 如果已登录，跳转到首页
				next({path: "/"});
			} else {
				if (hasLogin) {
					_roles = roles;
				}
				// console.log('用户角色：', _roles);
				if (checkRoute(_roles, to)) {
					next();
				} else {
					next({path: '/login'});
				}
			}
		}
		setTimeout(() => {
			end();
		}, 0)
	})
	router.afterEach(() => {
	})
}

export default useInterceptor;
